excecute = (isset($_GET['excecute']) && $_GET['excecute'] == '1') ? true : false; // Pogledamo ce je baza ze uvozena $sql = sisplet_query("SELECT * FROM misc WHERE what='version'"); // Baza je ze uvozena - pogledamo verzijo if($sql !== FALSE && mysqli_num_rows($sql) > 0){ $row = mysqli_fetch_array($sql); $this->version = $row['value']; } } // Pogledamo ce je baza uvozena public function checkDBEmpty(){ return ($this->version == '') ? true : false; } // Pogledamo ce je baza posodobljena na najnovejso verzijo public function checkDBUpdated(){ $update = $this->prepareUpdateArray(); return (count($update['update_lines']) != 0) ? true : false; } public function display(){ // Uvazamo celotno novo bazo if($this->version == ''){ $this->displayInsert(); } // Posodabljamo bazo na zadnjo verzijo else{ $this->displayUpdate(); } } // Prikazemo uvoz baze public function displayInsert(){ global $site_url; echo '

Uvoz nove 1KA MySql baze

'; // Izvajamo uvoz celotne baze if($this->excecute){ // Uvozimo novo bazo $import = $this->prepareImportArray(); $this->importCleanDB($import); // Ce je bilo vse ok potem izvedemo se posodobitev $sql = sisplet_query("SELECT * FROM misc WHERE what='version'"); if($sql !== FALSE && mysqli_num_rows($sql) > 0){ $row = mysqli_fetch_array($sql); $this->version = $row['value']; $update = $this->prepareUpdateArray(); $this->updateDB($update['new_version'], $update['update_lines']); echo 'Postopek uvoza podatkovne baze je dokončan.'; echo '

'; // Gumb za nazaj na frontpage echo 'Nazaj na prvo stran'; } // Uvoz error else{ echo 'Prišlo je do napake pri uvažanju.'; } } else{ echo 'Izvedel se bo uvoz celotne MySql baze. Postopek lahko traja nekaj minut!
'; echo '
'; // Gumb za posodobitev echo 'Uvozi'; } } // Prikazemo update baze public function displayUpdate(){ global $site_url; echo '

Posodobitev 1KA MySql baze

'; $update = $this->prepareUpdateArray(); // Izvajamo posodobitev baze if($this->excecute){ $this->updateDB($update['new_version'], $update['update_lines']); } elseif(count($update['update_lines']) != 0){ echo 'Trenutna verzija: '.$this->version.''; echo '
'; echo 'Posodobitev na verzijo: '.$update['new_version'].''; echo '

'; echo 'Izvedla se bo posodobitev MySql baze!'; echo '

'; foreach ($update['update_lines'] as $key => $update_line) { echo $update_line.'

'; } echo '
'; // Gumb za posodobitev echo 'Posodobi'; } else{ echo 'Nameščena je najnovejša različica MySql baze.'; echo '

'; // Gumb za nazaj na frontpage echo 'Nazaj na prvo stran'; } } // Pripravimo vrstice za uvoz private function prepareImportArray(){ $import_lines = array(); $query = ''; $handle = fopen($this->clean_db_file, "r"); if ($handle) { while (($line = fgets($handle)) !== false){ // Trimamo odvecne presledke $line = trim($line); // Shranimo vrstico za update if($line != '' && substr($line, 0, 1) != '#' && substr($line, 0, 2) != '--' && substr($line, 0, 2) != '//' && substr($line, 0, 2) != '/*'){ // Ce je vrstica zakljucena s ; dodamo query v array if(substr($line, -1) == ';' || substr($line, 0, 22) == 'INSERT INTO `srv_help`'){ $query .= $line; $import_lines[] = $query; $query = ''; } // Ukaz je v vecih vrsticah - samo pripnemo string else{ $query .= $line; } } } fclose($handle); // Se dodatno dodamo recnum funkcijo $import_lines[] = "CREATE FUNCTION MAX_RECNUM (aid INT(11)) RETURNS INT(11) DETERMINISTIC BEGIN DECLARE max INT(11); SELECT MAX(recnum) INTO max FROM srv_user WHERE ank_id = aid AND preview='0'; IF max IS NULL THEN SET max = '0'; END IF; RETURN max+1; END;"; } else { echo 'Manjka sql datoteka za uvoz!'; } return $import_lines; } // Uvoz nove prazne baze private function importCleanDB($import_lines){ // Izvedemo uvoz po posameznih ukazih if(count($import_lines) > 0){ foreach ($import_lines as $key => $import_line) { $sql = sisplet_query($import_line); if (!$sql){ echo 'Uvoz vrstice:
'.$import_line.'
'; echo 'Napaka pri uvozu: '.mysqli_error($GLOBALS['connect_db']); echo '

'; } /*else{ echo 'Uvoz vrstice:
'.$import_line.'
'; echo 'OK'; echo '

'; }*/ flush(); } } } // Pripravimo vrstice za posodabljanje private function prepareUpdateArray(){ $new_version = ''; $update_lines = array(); $update = false; $query = ''; $handle = fopen($this->update_db_file, "r"); if ($handle) { while (($line = fgets($handle)) !== false){ // Trimamo odvecne presledke $line = trim($line); // Shranimo vrstico za update if($update && $line != '' && substr($line, 0, 1) != '#'){ // Ce je vrstica zakljucena s ; dodamo query v array if(substr($line, -1) == ';'){ $query .= $line; // Pogledamo ce gre za vrstico verzije in jo shranimo if(strpos($query, ' WHERE what="version"') !== false){ if (preg_match("/^update misc set value='(.*)' where what=/i", $query, $matches)) { $new_version = $matches[1]; } } $update_lines[] = $query; $query = ''; } // Ukaz je v vecih vrsticah - samo pripnemo string else{ $query .= $line; } } // Ko pridemo do vrstice za trenutno verzijo shranimo vse nadaljne vrstice za update if(strpos($line, $this->version) !== false) $update = true; } fclose($handle); } else { echo 'Manjka sql datoteka za posodobitev!'; } return array('new_version'=>$new_version, 'update_lines'=>$update_lines); } // Izvedba popravkov od trenutne verzije naprej private function updateDB($new_version, $update_lines){ // Izvedemo posodobitve if($new_version != '' && count($update_lines) > 0){ foreach ($update_lines as $key => $update_line) { $sql = sisplet_query($update_line); if (!$sql){ echo 'Posodabljanje vrstice:
'.$update_line.'
'; echo 'Napaka pri posodabljanju: '.mysqli_error($GLOBALS['connect_db']); echo '

'; } /*else{ echo 'Posodabljanje vrstice:
'.$update_line.'
'; echo 'OK'; echo '

'; }*/ flush(); } } } } ?>